// 最大输入字数
const MAX_INPUT_NUM = 140
// 可选择最大图片数量
const MAX_IMG_NUM = 9
// 初始化数据库
const db = wx.cloud.database()
// 输入框中的内容
let content = ''
// 用户信息
let userInfo = {}
Page({

  /**
   * 页面的初始数据
   */
  data: {
    totalNums:0,
    footerBottom:0,
    imglist:[],
    isSelectShow:true
  },

  // 输入框输入事件
  onInput(e){
    let totalNums = e.detail.value.length
    if(totalNums >= MAX_INPUT_NUM){
      totalNums = `最大字数为${MAX_INPUT_NUM}`
    }
    this.setData({
      totalNums
    })
    content = e.detail.value
  },

  // 输入框获得焦点
  onFocus(e){
    this.setData({
      footerBottom:e.detail.height
    })
  },
  
  // 输入框失去焦点
  onBlur(e){
    this.setData({
      footerBottom:0
    })
  },

  chooseImg(){
    // 最多还能选几张图片
    let count = MAX_IMG_NUM - this.data.imglist.length
    wx.chooseImage({
      count: count,
      sizeType:['original', 'compressed'],
      sourceType:['album', 'camera'],
      success:(res)=>{
        console.log(res);
        this.setData({
          imglist:this.data.imglist.concat(res.tempFilePaths)
        })
        // 选完之后还能选几张图片
        count = MAX_IMG_NUM - this.data.imglist.length
        this.setData({
          isSelectShow:count <= 0?false:true
        })
      },
      fail:()=>{
        wx.showToast({
          title: '图片获取失败',
          icon:"error"
        })
      }
    })
  },
  
  // 点击图片进行预览
  imgPreview(e){
    console.log(e);
    wx.previewImage({
      urls: this.data.imglist,
      current:e.currentTarget.dataset.src
    })
  },

  deleteImg(e){
    const index = e.currentTarget.dataset.index
    this.data.imglist.splice(index,1)
    this.setData({
      imglist:this.data.imglist
    })
    if(this.data.imglist.length == MAX_IMG_NUM - 1){
      this.setData({
        isSelectShow:true
      })
    }
  },

  // 发布功能
  send(){
    // 判断输入框有没有内容
    if(content.trim() === ''){
      wx.showModal({
        cancelColor: 'cancelColor',
        title:"请输入内容"
      })
      return
    }
    wx.showLoading({
      title: '发布中',
      mask: true,
    })

    let promiseArr = []
    let fileIDs = []
    for(let i = 0;i<this.data.imglist.length;i++){
      let item = this.data.imglist[i]
      let suffix = /\.\w+$/.exec(item)[0] 
      let p = new Promise((resolve,reject) => {
          wx.cloud.uploadFile({
          // 云存储路径
          cloudPath: 'blog/' + Date.now() + '-' + Math.random() * 1000000 + suffix,
          // 要上传文件资源的路径
          filePath: item, 
          success:(res)=>{
            console.log(res);
            // 因为图片是一张纸上传的，所以将每一次的fileID进行拼接
            fileIDs = fileIDs.concat(res.fileID)
            resolve()
          },
          fail:(err)=>{
            console.log(err);
            reject()
          }
        })
      })
      promiseArr.push(p)
    }
    Promise.all(promiseArr).then(res => {
      db.collection('blog').add({
        data:{
          ...userInfo,
          content,
          img:fileIDs,
          createTime:db.serverDate()
        }
      }).then(res => {
        wx.hideLoading()
        wx.showToast({
          title: '发布成功',
        })
      }).catch(err => {
        wx.hideLoading()
        wx.showToast({
          title: '发布失败',
        })
      })
    })

    // 返回博客列表，并且刷新
    setTimeout(() => {
      wx.navigateBack()
    }, 2000);

    // 获取blog页面，从而调用blog页面里面的方法
    const pages = getCurrentPages()
    // 取到上一个页面
    const prevPage = pages[pages.length - 2]
    prevPage.onPullDownRefresh()
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log(options);
    userInfo = options
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})